A storage server (also known as a “filer”) is a computer that provides storage services in both network attached storage (NAS) and storage area network (SAN) environments relating to the organization of information on storage devices, such as disks. The filer includes a storage operating system that implements a storage system to logically organize the information as a hierarchical structure of directories and files on the disks. Each “on-disk” file may be implemented as a set of disk blocks configured to store information, whereas the directory may be implemented as a specially-formatted file in which information about other files and directories are stored. A filer may be configured to operate according to a client/server model of information delivery to allow many clients to access files stored on the filer. In this model, the client may include an application, such as a file system protocol, executing on a computer that connects to the filer over a computer network. The computer network can include, for example, a point-to-point link, a shared local area network (LAN), a wide area network (WAN), or a virtual private network (VPN) implemented over a public network such as the Internet. Each client may request filer services by issuing file system protocol messages (in the form of packets) to the filer over the network.
A common type of file system is a “write in-place” file system, in which the locations of the data structures (such as inodes and data blocks) on disk are typically fixed. An inode is a data structure used to store information, such as metadata, about a file, whereas the data blocks are structures used to store the actual data for the file. The information contained in an inode may include information relating to: ownership of the file, access permissions for the file, the size of the file, the file type, and references to locations on disk of the data blocks for the file. The references to the locations of the file data are provided by pointers, which may further reference indirect blocks that, in turn, reference the data blocks, depending upon the quantity of data in the file. Changes to the inodes and data blocks are made “in-place” in accordance with the write in-place file system. If an update to a file extends the quantity of data for the file, an additional data block is allocated and the appropriate inode is updated to reference that data block.
Another type of file system is a write-anywhere file system that does not overwrite data on disks. If a data block on disk is read from disk into memory and “dirtied” with new data, the data block is written to a new location on the disk to optimize write performance. A write-anywhere file system may initially assume an optimal layout, such that the data is substantially contiguously arranged on the disks. The optimal disk layout results in efficient access operations, particularly for sequential read operations. A particular example of a write-anywhere file system is the Write Anywhere File Layout (WAFL®) file system available from Network Appliance, Inc. The WAFL file system is implemented within a microkernel as part of the overall protocol stack of the filer and associated disk storage. This microkernel is supplied as part of Network Appliance's Data ONTAP® storage operating system, residing on the filer, that processes storage service requests from network-attached clients.
As used herein, the term “storage operating system” generally refers to the computer-executable code operable on a storage system that manages data access. The storage operating system may, in case of a filer, implement file system semantics, such as the Data ONTAP® storage operating system. The storage operating system can also be implemented as an application program operating on a general-purpose operating system, such as UNIX® or Windows®, or as a general-purpose operating system with configurable functionality, which is configured for storage applications as described herein.
Disk storage is typically implemented as one or more storage “volumes” that comprise physical storage disks, defining an overall logical arrangement of storage space. Currently available filer implementations can serve a large number of discrete volumes. Each volume is associated with its own file system and as used herein, the terms “volume” and “file system” are interchangeable.
The disks within a volume can be organized as a Redundant Array of Independent (or Inexpensive) Disks (RAID). RAID implementations enhance the reliability and integrity of data storage through the writing of data “stripes” across a given number of physical disks in the RAID group, and the appropriate storing of parity information with respect to the striped data. In the example of a WAFL® file system, a RAID 4 implementation is advantageously employed, which entails striping data across a group of disks, and storing the parity within a separate disk of the RAID group. As described herein, a volume typically comprises at least one data disk and one associated parity disk (or possibly data/parity) partitions in a single disk arranged according to a RAID 4, or equivalent high-reliability, implementation.
Network Environment
FIG. 1 is a block diagram of an exemplary network environment 100 in which the principles of the present invention are implemented. The environment 100 is based around a network 102. The network 102 can be a local area network (LAN), a wide area network (WAN), a virtual private network (VPN) using communication links over the Internet, for example, or any combination of the three network types. For the purposes of this description, the term “network” includes any acceptable network architecture.
The network 102 interconnects a number of clients 104 and storage servers, or filers, 106, 112. These filers, including Filer A 106 and Filer B 112 form a storage server cluster. Each filer 106, 112 includes a plurality of data access ports which enable the storage server to connect to a plurality of disk loops. In FIG. 1, filer A 106 includes port A 108 and port B 110, and filer B 112 includes port A 114 and port B 116. Each storage server 106, 112 is connected to a Fibre Channel loop, including disk shelf A 118 and disk shelf B 120. Each disk shelf 118, 120 includes a number of storage devices D1-DN that operate in a manner known in the art. It should be understood that while only two filers and two disk shelves are shown in FIG. 1, multiple filers and disk shelves may be connected in a cluster configuration and operate in a similar manner.
Filer A 106 is connected to disk shelf A 118 over data connection path 122 via port A 108. Filer B 112 is connected to disk shelf A 118 over data connection path 124 via filer B's port B 116. Filer B 112 is connected to disk shelf B 120 over data connection path 126 via port A 114. Filer A 106 is connected to disk shelf B over data connection path 128 via filer A's port B 110. As shown in the embodiment of FIG. 1, the filer which is connected via its port A to a disk shelf is a primary storage server for the data stored on that disk shelf. The network topology described here is exemplary only, and it is noted that alternate network topologies may be utilized, e.g., via switches, using external RAID boxes, etc.
A client 104 may be a general-purpose computer, such as a PC, configured to execute applications and operating systems that include file system protocols such as Network File System (NFS) and Common Internet File System (CIFS). Moreover, each client 104 may interact with a filer 106, 112 in accordance with a client/server model of information delivery. That is, a client 104 may request the services of a filer 106, 112 to retrieve files requested by the client.
To implement a takeover in the event of failure of a filer, the filers 106, 112 can communicate with each other in a peer-to-peer capacity across one or more communication links, such as a cluster interconnect 130. The cluster interconnect 130 can utilize any communication medium and protocol, including, for example, a Fibre Channel or a ServerNet™ cluster interconnect.
Each filer 106, 112 includes one or more controllers (not shown). In some situations, a controller has information that needs to be accessed. There is a need for a high-level abstraction, where only one filer retrieves the data from the controller of a particular disk shelf and then makes the data available across the network in a distributed fashion instead of distributing the data at the controller level.